<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        // forEach 函数式 不用使用for循环
        var arr = [100,200,300,400,500];
        arr.forEach( function(item,i){
            console.log(item+'--'+i);
        })  

        // 自己写forEach()函数 实现forEach的功能
        var arr = [100,200,300,400,500];
        //forEach的声明
        function forEach(a,fn){
            for(var i=0;i<a.length;i++){
                fn&&fn(a[i],i);  //当fn函数存在时调用fn这个函数
            }
        }
        // forEach的调用
        forEach(arr,function(item,i){
            console.log(item+'--'+i)
        })


        // 字符串的方法都对原字符串没有改变
        // 字符串的方法
        // toUpperCase()方法
        var low = 'abcde';
        console.log(low.toUpperCase());
        
        // split 方法
        var url ='https://www.baidu.com/s?cl=3&tn=baidutop10&fr=top1000&wd=%E4%B8%AD%E7%BE%8E%E9%AB%98%E5%B1%826%E5%B0%8F%E6%97%B6%E4%BC%9A%E6%99%A4%E5%BC%95%E4%B8%96%E7%95%8C%E8%A7%A3%E8%AF%BB&rsv_idx=2&rsv_dl=fyb_n_homepage&hisfilter=1';
        var arr0 = url.split('?');
        console.log(arr0);
        var arr1 = url.split('?')[1].split('&');
        console.log(arr1);
        for(var i=0;i<arr1.length;i++){
            var arr2 = arr1[i].split('=')[1]; //取出等号后面的内容
            console.log(arr2);
        }
        
        
        var url ='https://www.baidu.com/s?cl=3&tn=baidutop10&fr=top1000&wd=%E4%B8%AD%E7%BE%8E%E9%AB%98%E5%B1%826%E5%B0%8F%E6%97%B6%E4%BC%9A%E6%99%A4%E5%BC%95%E4%B8%96%E7%95%8C%E8%A7%A3%E8%AF%BB&rsv_idx=2&rsv_dl=fyb_n_homepage&hisfilter=1';
        var arr = url.slice(url.indexOf('?')+1).split('&');
        console.log(arr);
        var dataArr = [];
        for(var i=0;i<arr.length;i++){
            // console.log(arr[i].split('='));
            dataArr[i] = arr[i].split('=');   //二维数组
            //dateArr.push(arr[i].split('='));
        }
        console.log(arr);
        console.log(dataArr);
        console.log(dataArr[3][1]);  

        var date = '2021/10/08';
        var arr = date.split('/');
        console.log(arr);  //以/划分数组元素
        console.log(arr[1]);

        // slice 方法
        var title = '武磊当选官方最佳！获得8.6分全场最高';
        document.write(
            title.length>8
                ?title.slice(0,8)+'...'
                :title
        );
        console.log(title); //原字符串不变

        var title = '武磊当选';
        if(title.length>8){
            title = title.slice(0,8) + '...'  //title取八个字多了加....
        }
        document.write(title);

        var title = '武磊当选官方最佳！获得8.6分全场最高'
        var newTit = title.slice(0,8);
        document.write(newTit+'...');


        //数组的方法
        //声明数组
        var arr = [1,2,true,'abvc',100];
        console.log(arr);
        // var arr1 = new Array(); // 空数组
        // var arr1 = new Array(3); // 一个数字 长度是3的空数组
        var arr1 = new Array(1,2,5);
        console.log(arr1);

        // 二维数组

        // 数组长度可变
        var arr = []; //长度为0
        arr[0] = 100;
        console.log(arr); //长度为1


        // sort() 方法,只能排序 10 以内的数组,默认从小到大
        var arr = [1,3,8,9,7,4,2,0];
        console.log(arr.sort());
        
        
        // 如果需要排序的数组中存在大于 10 的数字，我们需要向 sort() 方法中传入回调函数：
        var arr = [1,10,3,16,8,9,7,4,2,0];
        arr.sort(function (a , b) {return a - b;});
        console.log(arr); 
        //对于传入的两个参数：a 代表的是找到的数组中的当前项，b 代表的是当前项的后一项
        // return a -b ： 如果 a 大于 b，返回结果，a 与 b 交换位置。如果 a 小于 b，那么 a 和 b 位置不变。 这是升序排序。
        // return b -a ： 如果 b 大于 a，返回结果，a 与 b交换位置。如果  a 小于 b，那么 a 和b位置不变。 这是降序排序。

        var arr = [1,10,3,16,8,9,7,4,2,0];
        function up(a,b){
            return a-b;
        }
        console.log(arr.sort(up));

        // 数组删除 改变原数组
        var arr = [1,2,3];
        arr.shift();
        console.log(arr); //删除了第一个元素 返回删除的元素
        arr.pop();
        console.log(arr); //删除最后一个

        // slice不改变 splice改变
        var arr = [0,1,2,3,4,5,6];
        console.log(arr.slice(1,3)); //返回值为提取的子数组
        console.log(arr); //不改变
        arr.splice(1,3); //从下标为1开始删除3个
        console.log(arr); //改变

        //splice
        var arr = [1,2,3,4,5,6];
        var del = arr.splice(2,2,200,300,400); //从下标为2开始删除2个 将200,300,400插入
        // var del = arr.splice(2,0,200,300,400);
        console.log(del);
        console.log(arr);

        //数组添加 可以有相同的元素 push改变原数组
        var arr = [1,2,3];
        arr.push(1,2,3);
        console.log(arr); 

        //concat参数可以是几个值也可以是数组
        var newArr = arr.concat(100,200,[300,400]);
        console.log(newArr);
        console.log(arr); //push改变arr concat不改变arr

    </script>
</body>
</html>